Shell脚本实战19-批量检查多个网站地址是否正常

1. 需求

要求:

  • 使用Shell数组的方法实现,检测策咯尽量模拟用户访问
  • 每10秒进行一次全部检测,无法访问的输出报警
  • 待检测的地址如下:
    1
    2
    3
    4
    http://blog.oldboyedu.com
    http://blog.etiantian.org
    http://oldboy.blog.51cto.com
    http://10.0.0.1

2. 思路

思路:

  • 把URL定义成数组,形成函数
  • 编写URL检查脚本函数,传入数组的元素,即URL
  • 组合实现整个案例,编写main主函数(即执行函数),每隔10秒检查一次

3. 脚本

下面的参考脚本采用Shell数组的方法,同时检测多个URL是否正常,并给出专业的展示效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/bin/bash
. /etc/init.d/functions
check_count=0
usl_list=( #<==定义检测的URL数组,包含多个URL地址
http://blog.oldboyedu.com
http://blog.etiantian.org
http://oldboy.blog.51cto.com
http://10.0.0.1
)
function wait() #<==定义3、2、1倒计时函数
{
echo -n '3秒后,执行检查URL操作.';
for ((i=0; i<3; i++))
do
echo -n "."; sleep 1
done
echo
}
function check_url() #<==定义检测URL的函数
{
wait
for ((i=0; i<`echo ${#url_list[*]}`; i++))
do
wget -o /dev/null -T 3 --tries=1 --spider ${url_list[$i]} > /dev/null 2>&1
if [ $? -eq 0 ]
then
action "${usl_list[$i]}" /bin/true
else
action "${usl_list[$i]}" /bin/false
fi
done
((check_count++))
}
main()
{
while true
do
check_url
echo "----------check count:${check_count}----------"
sleep 10
done
}
main

提示:实际使用时,一些基础的函数脚本(例如,加颜色的函数)是放在函数文件里(例如,放在/etc/init.d/functions里),与执行的脚本内容部分隔离,这样看起来会更清爽,大型的语言程序都是这样开发的。

0%